In recent years, attention has focused on the flash memory, a typical nonvolatile semiconductor memory, for storage devices. Because a flash memory does not have a drive portion like a magnetic storage device typified by a HDD (Hard Disk Drive), it features lower power consumption than a HDD. A storage device that uses a memory drive mounted with a plurality of flash memories instead of a HDD has been proposed as an external storage device (refer to Patent Document 1).
Meanwhile, a storage subsystem must be stable, and as such, employs a configuration with duplexed components that enables processing to be carried out even when a malfunction occurs in a portion of the components. For example, in order to heighten data integrity and throughput, RAID (Redundant Array of Inexpensive Disks) technology is used to manage a plurality of storage devices as a single RAID Group, and to redundantly store data. The RAID Group forms one or more logical storage areas at this time. When data is stored in the storage area, redundant data is stored in the storage devices configuring the RAID Group. Storing redundant data in the storage devices makes it possible to recover the data even when one of the storage devices malfunctions.
For example, in a case where a memory drive comprising flash memories is configured as RAID 5, a ECC (Error Correct Code) computed using a plurality of data is stored in an ECC memory drive, and even if one memory drive should malfunction, it is possible to recover the data stored in the failed memory drive by using the remaining data and the ECC.
However, if malfunctions should occur in more than a predetermined number of memory drives, it becomes impossible to recover the data even in a RAID-configured subsystem. Accordingly, a storage subsystem generally makes use of an extra drive in which data has not been stored, called a spare drive.
The storage subsystem employs a configuration in which, in a case where a malfunction occurs in one of the RAID-configured memory drives, the data in the failed memory drive is recovered using the data in the remainder of the RAID-configured memory drives, and is stored in the spare drive.
[Patent Document 1]
Japanese Patent Application Laid-open No. 2008-204041
In a RAID 5-configured storage subsystem, for example, when data a, b, c is written to a storage device during an initial data write, the data a, b, c is respectively stored in three HDD or memory drives, a parity is created by using the data a, b, c to carry out an exclusive OR operation, and the created parity is stored in either a HDD or memory drive designated for storing the parity.
The configuration is such that a processor for controlling the input/output of data to/from the storage devices at this time creates the parity by using the data a, b, c in a cache memory to carry out the exclusive OR operation, and stores the created parity in either the parity-storage-designated HDD or memory drive.
During a random write in line with a data update, the processor uses an exclusive OR operation to create a new parity based on the old data, which has been targeted for updating, new data and the old parity (the parity corresponding to the old data), and stores the created new parity in either the HDD or memory drive designated for parity storage.
However, when updating HDD data, the HDD data may be overwritten. For this reason, there is the possibility of the old parity stored in the HDD being lost as a result of the overwrite process. When this happens, it is not possible to use the old parity to create a new parity when updating HDD data.
By contrast, when updating flash memory data, new data is written to the update region as new data, and the old data targeted for updating remains until the entire block is deleted. For this reason, the new parity stored in the memory drive also remains as-is until the block is deleted in its entirety. In this case, it is possible to use the old parity to create the new parity when updating flash memory data.
However, in a configuration in which the processor uses cache memory to carry out an operation for creating the new parity, the processor accesses the cache memory many times, making it impossible to reduce the load on the processor.